Разумеется есть, GetUnitItemByTypeBj или как то так, это бж функция, суть в цикле перебирает слоты инвентаря, если предмет в слоте N равен по типу заданному, возвращает ссылку на этот предмет, иначе возвращает null.
Вот работающая система на GUI
Есть 2 Паладина, один с "сердцем", другой - без. Триггер срабатывает каждый раз, когда Паладин с "сердцем" заходит в область
Я не особо разбираюсь в англоязычном варианте триггеров, но у вас вроде стоит "Удалить - последний брошенный предмет", вам нужно "Удалить - Предмет переносимый [герой] типа [название предмета]". Если мой руссификатор не влияет на последовательность пунктов в настройке, то вы использовали третью строчку, а вам нужна девятая. Там вы можете удалить конкретный предмет у конкретного же персонажа.
Да, реально. Для этого тебе понадобится сделать три вещи:
Создать улучшение на основе улучшения для Headhunter.
Создать способность на основе способности "Безумие" (именно она и изменяет Headhunter'а). Я имею в виду ту способность, в которой в данных нужно указать "тип войск".
Добавить обоим юнитам эту способность. Также посмотри, чтобы в параметре "взаимосвязь эквивалентов" у твоего "рыцаря" стоял "паладин".
Вроде Эльрат (или nikikin ли? Не помню) занимался конвертом моделей из homm5 в wc3. Попробуй договориться с ним, потому что из пятых героев крайне мало моделек переконвертировано. А из тех, что есть - мало нормальных, полноценно анимированных.
У анрайза вроде было, там был морф на мемхаке чисто без абилок, в его разделе должно быть. Найден ивент урона на предметы и разрушаемые обьекты.
Но без костыльно пока в паблике нету, портрет юнита хранится не в его структуре, нужно менять в бд данные о потртете или патчить прорисовку (что пока не сделал никто), так что тупо морфим да модель меняем.
Нашёл систему, где звук передаётся в таймер, который истекает через 0 секунд. В результате один и тот же звук может проигрываться несколько раз без всяких проблем. В инетике пишут мол это такой баг движка.
doleo82, я бы тебе предложил переложить скилл на полностью триггерную основу, тогда можно будет регулировать урон в момент его нанесения, в зависимости от каких-либо условий...
Я посмотрел, но возникла проблема. Я тупой и не могу написать также, но моменте добаления юнита в хеш таблицу. Я Save Handle of (Last created unit) as 0 of (а дальше я не нашёл, как добавть "Key(Constructed structure))" in Hash
и соответсвенно любое другое действие, где прописанно Key
Так не нужно ничего самому делать. Я прикрепил к тому сообщению карту. В ней я уже все сделал сам. Тебе осталось только скопировать триггеры оттуда в свою карту и заменить юнитов на тех, которые тебе нужны. Вот та карта:
set Host = LoadUnitHandle(твой_хеш, GetHandleId(умерший_юнит), твоё_число)
set Dead = LoadInteger(твой_хеш, GetHandleId(Host), другое_твоё_число)
call SaveInteger(твой_хеш, GetHandleId(Host), другое_твоё_число, Dead + 1)
// Не забываем чистить хеш.
call FlushChildHashtable(твой_хеш, GetHandleId(умерший_юнит))
Через некоторое время создавай новых юнитов.
set Group = LoadGroupHandle(твой_хеш, GetHandleId(твоё_строение), твоё_число_2)
set Dead = LoadInteger(твой_хеш, GetHandleId(твоё_строение), другое_твоё_число)
if Dead > 0 then
call SaveInteger(твой_хеш, GetHandleId(твоё_строение), другое_твоё_число, 0)
loop
set Dead = Dead - 1
set Unit = CreateUnit(...)
call GroupAddUnit(Group, Unit)
call SaveUnitHandle(твой_хеш, GetHandleId(Unit), твоё_число, твоё_строение)
exitwhen Dead == 0
endloop
endif
да, массив постоянно будет делать reAllocMem , если текущий размер окажется мельче, чем номер ячейки. Поэтому, если массив будет часто писаться с инкрементом, то выгоднее сперва прописать в последнее допустимое значение (8191 для 26 патча) типа MyArray[8191]=0
чисто чтобы его по памяти не возили туда-сюда каждые X значений (не смотрел, сколько изначально выделяется)
я вот у себя пофиксил такую же байду с таблицей строк. игра выделяет по 16 ячеек под строки, а у меня в доте они генерируются десятками в секунду. Каждую секунду игра делала ре-аллок памяти, а к середине игры там уже несколько мб таблица туда-сюда ездила. Сделал аллок в разы больше - и таблица всего 2 раза переедет за 40 минут игры максимум. Экономия тактов налицо.
Хеш-таблицы вообще не являются массивами, гугл в помощь, поэтому там об этом думать не стоит. Стоит думать лучше о том, чтобы первичных (родительских) ключей было меньше, чем вторичных, чисто исходя из того, что в этом случае перебор по таблице окажется быстрее
отменять постройку юнита если технология уже ап
либо как сразу говорили через ап здания
где каждому твоему зданию будет соответствовать такое же здание но с дополнительным слотом
с продажей юнита открываешь доту и смотришь как там сделан спелл передать предметы у куры
он сделан как раз через продажу юнита
иначе никак
если не нравится пожалуйся богу об этом
или близардам
пусть выпустят новый патч специально для тебя
Как бы вообще не понял сути вопроса, но судя по этому комментарию, не получается удалить в РО карты синий объект из кампании. Это нормально, удалять надо в РО редактора кампании.
можно задать постоянную музыку при входе юнита в область.
А выключать её по событию "юнит покидает область".
Они же рядом события эти, чего усложнятьв сё.
Ну так в условия строительства - только лагерь 2(доп лагерь).
И можно ещё поставить при условии, что есть больше 1 ратуши (т.е. 2 лагерь 100% построен).
Мой бот единовременно владеет только 1 рудником. 2 ратуши это решение только для первого экспа, у меня на карте много рудников по небольшому количеству золота, комп должен возле каждого из них обустраивать оборону из вышек.
Только что проверил выставил строить у рудника №2 при условии что есть 2 ратуши, и он гад все равно стоит на главной базе,где рудник уже закончился.
Хм... То есть ты делал башни компу, поставил им место только во 2 лагере... Или у 2 рудника. И только при условии что у него есть 2 ратуши или заняты 2 рудника? Хм... Если он их строит, то он понимает что есть 2 рудника/ратуши, но не понимает где именно 2 рудник находится.
всё как сказал Borodach
чтобы такой фигни не было надо запускать таймер на 0 секунд и им восстанавливать здоровье
также при получении урона надо давать скил на +100500 хп а таймером этот скил убирать и устанавливать нужное количество хп
подобных вопросов было дофига и готовых решений как следствие тоже дофига
я вроде тоже как то кидал свою систему обнуления урона
у меня тут дело в том что герои и так моментально ресаются, но отнимается жизни и они улетают на точку реса, а если сработает крест или реинкарнация юнит никуда не улетает а просто ждёт свой таймер и ресается...А что я собственно говоря туплю, у меня же смерти все триггерные как никак, просто в общем событии не отнимать жизнь если прокнул шанс, и не переносить на стартовую локу, а просто реснуть с задержкой. Спасибо за наводку парни 8gabriel8, pro100master, PT153, Absolute, KingMaximax, ssbbssc, , я понял, что мне нужно сделать
local DamageTrigger = CreateTrigger()
for i = 0, bj_MAX_PLAYER_SLOTS - 1 do
TriggerRegisterPlayerUnitEvent(DamageTrigger, Player(i), EVENT_PLAYER_UNIT_DAMAGING) -- до вычета брони
TriggerRegisterPlayerUnitEvent(DamageTrigger, Player(i), EVENT_PLAYER_UNIT_DAMAGED) -- после вычета брони
end
TriggerAddAction(DamageTrigger, function()
local damage = GetEventDamage() -- число урона
local damageType = BlzGetEventDamageType() -- тип урона
local target = GetTriggerUnit() -- тот кто получил урон
local caster = GetEventDamageSource() -- тот кто нанёс урон
end)
Еще раз, 'Aams' - щит от магии, он дает маг имун и только. 'Aam2' - нейтрализует урон от магии, при этом в цель можно применять заклинания, обрати внимание там другой бафф.
Активация либо канал, либо любой скил без цели, и дамми каст щита молний на этого героя.
Может быть получится с руной щита молний, но не факт, надо проверять
Кажется я понял в чем дело. В общем, в карте монолит в импорте файлик LoadingScreen.mdx весит 3 кб, когда я его экспортирую на рабочий стол, а затем импортирую обратно в карту с рабочего стола, то он почему-то начинает весить не 3, а 1 кб, а Лоадскрин не показывается при загрузке карты. Но из-за чего это происходит я не знаю.
8gabriel8, Я полагал, что чёрные - юниты/объекты внутри, а красные - юниты/объекты вокруг, вот собственно его задача была расстановка юнитов/объектов вокруг, но ты прав, нужно больше информации.
Поинт - позиция юнита
Группа - создать группу
Выбрать всех юнитов вокруг героя, добавить в Группу
Инт - количество юнитов в Группе
От 1 до Инт
Цикл:
-Установить Таргет = рандом юнит из группы
-Создать Дамми в Поинт
-Приказать последнему созданному замедление(Альянс) на Таргет
-Добавить таймер последнему созданному 0.50
-Убрать Таргет из Группы
-Установить Таргет = нет б.е.
Очистить Группу
Удалить Поинт
call DestroyGroup(udg_Group)
set udg_Group = null
set udg_Point = null
Рад, что ты предложил выход, но я, боюсь, твой код себе никак не перенесу, ибо, как писал в вопросе, лишь на GUI могу работать. 8gabriel8,
мне кажется, проблема не в этом триггере, а в другом, который запускает триггеры и таймеры.
Триггер, запускающий таймер, вряд ли многое испортить может
Мдаааа... Я свою ошибку таки нашёл. Она была в самом тупом месте из всех возможных.
Я действительно не понимаю, это у меня голова не работает совершенно, или в редакторе какие-то баги
Цитата из вопроса, у меня не работает голова.
Так вот, это я дурак полный.
Запихнул обнуление своей переменной ВНИМАНИЕ! в триггер, который игрокам-компьютерам каждые 2 секунды обновляет ресурсы. А вместе с этим и обнуляет снова и снова мою переменную. Обнаружил ли я это через дебаги? Нет, просто от скуки и безнадёжности положения начал прокручивать и листать все триггеры.
Спасибо всем, кто пытался помочь, это было очень приятно) Мне жаль, что вы ломали голову и тратили время впустую по моей глупости и невнимательности.
Вджасс это дополнение к обычному джассу, у себя ты можешь видеть строки объявления библиотеки, продвинутые комментарии и статические константные переменные
» WarCraft 3 / Погоня за Легионом
» WarCraft 3 / Определённый предмет
» WarCraft 3 / Наступление тьмы v0.92
» WarCraft 3 / Установка JNGP
» WarCraft 3 / Помощь с анимациями
» WarCraft 3 / Артефакты с текстурами
» WarCraft 3 / Рыцари
» WarCraft 3 / Смена контроля юнитов
» WarCraft 3 / Эффекты
» WarCraft 3 / Порталы и Юнит
» WarCraft 3 / Душа Демона 2 (v1.2)
» WarCraft 3 / Условие способность применяется на определеного типа юнита
» WarCraft 3 / Горючая смесь
» WarCraft 3 / Хеш таблица
» WarCraft 3 / Апгрейд одного юнита до другого
» WarCraft 3 / Syntax Error
» WarCraft 3 / Музыкальный список
» WarCraft 3 / Своя фоновая музыка
» WarCraft 3 / Редактор ИИ и доп. рудник
» WarCraft 3 / Изменение графики на SD
» WarCraft 3 / Отлавливать урон.
» WarCraft 3 / Щит молний.
» WarCraft 3 / черные квадраты
» WarCraft 3 / нерабочий триггер